Nonvolatile storage devices are used as primary and secondary data storage in computer systems. Some existing nonvolatile storage devices implement arrays of flash memory cells based on floating-gate transistor technology, such as NAND flash memory cells, to store electronic data in a format that can persist without a continuous power supply. The data typically consists of computer instructions, numerical data, application programs, operating systems, and the like.
The implementation of certain types of nonvolatile storage devices requires that fixed-size sections, or blocks, of memory cells with previously-stored data be erased before being reprogrammed with new data. Typically, the size of these blocks is larger than the size of fixed-size sections, or pages, of memory cells that can be programmed.
The conventional process of moving valid data remaining in portions of a block of memory cells before erasing the block and making the block available for reprogramming, collectively referred to as garbage collection, results in nonvolatile memory write operations that do not directly serve host (user) write requests. The total amount of data written in the nonvolatile memory over time—including host-request write operations, garbage collection write operations, and other storage device write operations—as a ratio to the amount of host (user) data written is known as write amplification.
Since the program/erase (P/E) lifecycle, or endurance, of typical nonvolatile memory cells is limited, some existing nonvolatile storage devices have implemented measures to extend the lifespan, or the perceived lifespan, of the nonvolatile storage devices. For example, typical nonvolatile storage devices present less total logical address space to hosts than the actual capacity of the memory cells in the device, known as over-provisioning. In addition, some nonvolatile storage devices limit the quantity of host writes over time based on the current amount of storage space available for programming or reprogramming, a practice known as throttling.
However, particular nonvolatile storage use cases can be relatively sensitive to write latency and require relatively high write performance on an on-demand basis for relatively limited amounts of data. For example, limited-capacity, on-demand write bandwidth can be required to save the main memory contents and processor state during the initiation of system hibernation mode. As a result, host-write throttling can hinder desired performance regarding certain use cases.